1. Field of the Invention
The invention relates generally to storage systems and more specifically relates to methods and structure for improved performance in computing parity in a RAID storage controller by using both hardware parity computation assist circuitry and programmed instructions for parity computation.
2. Discussion of Related Art
In RAID (Redundant Array of Independent Disks) storage systems, logical volumes are defined and managed. A logical volume comprises portions of two or more disk drives and stores redundancy information along with user data provided by attached host systems. The redundancy information is generated and stored in conjunction with stored data such that failure of a single disk drive (or two disk drives in some embodiments) does not preclude ongoing access to the data on the logical volume. Rather, the logical volume may continue operation until such time as the failed drive is replaced and the full redundancy features are restored (a “hot swap” operation and a “rebuild” operation).
Various “levels” of RAID storage management are standardized in the storage industry. In RAID level 5, user data and redundancy information is distributed (“striped”) over a plurality of storage devices (at least 3 devices). In RAID level 5, the redundancy information is the exclusive-OR (“XOR”) sum of the user data. Thus, a “stripe” of data in RAID level 5 management includes a plurality of blocks of user data and a corresponding parity block that is the XOR sum of the user data in the related blocks of the stripe. In like manner, RAID level 6 defines a stripe of data as a plurality of blocks of user data and two blocks of redundancy information—typically a first parity block that is the XOR sum or the other blocks and a second block that may be also XOR parity, Galois field accumulation (also referred to as Galois field multiplication or “GFM”), or other redundancy computations. RAID level 6 can therefore keep a logical volume operating even in the event of two disk drive failures of the logical volume.
Computation of the redundancy block (or blocks) can impose a notable computational load on a general purpose processor of the storage controller. For this reason, a number of present storage controllers replace the software (“firmware”) computation of a redundancy block (or blocks) with a special purpose circuit designed to assist the general purpose processor by off-loading the redundancy computations to a specially designed circuit for such computation. However, even such special purpose processors can become overloaded in a high performance storage system and/or may be less efficient for certain types of data or certain patterns of user data access.
Thus it is an ongoing challenge to efficiently compute redundancy information used in RAID storage systems and in particular in RAID levels 5 and 6 storage management.